package com.csair.seam.domain.service;

import java.util.List;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.csair.seam.domain.model.entity.ShareEquip;
import com.csair.seam.domain.model.entity.UserBehavior;
import com.csair.seam.domain.model.param.ShareEquipParam;
import com.csair.seam.domain.model.vo.ShareEquipModuleVo;

public interface ISharingCenterService{
	
	/**
	 * @description 查询模块展示的共享闲置设备
	 * @return
	 */
	List<ShareEquipModuleVo> findModuleShareEquipList(ShareEquipParam param);
	
	List<ShareEquipModuleVo> findModuleShareEquipListForPc(ShareEquipParam param);
	
	/**
	 * @description 根据参数查询共享闲置设备
	 * @param param
	 * @return
	 */
	List<ShareEquip> findSharingEquipByParam(ShareEquipParam param);
	
	/**
	 * @description 根据参数查询共享闲置设备（分页）
	 * @param param
	 * @return
	 */
	Page<ShareEquip> findSharingEquipPage(ShareEquipParam param);
	
	/**
	 * @description 添加或更新用户行为
	 * @param userBehavior
	 * @return
	 */
	int addOrUpdateUserBehavior(UserBehavior userBehavior);
	
	/**
	 * @description 查询用户行为列表
	 * @param userBehavior
	 * @return
	 */
	List<UserBehavior> getUserBehaviorList(UserBehavior userBehavior);
	
	/**
	 * @description 删除用户行为
	 * @param userBehavior
	 * @return
	 */
	int delUserBehavior(UserBehavior userBehavior);
	
	/**
	 * @description 查询精选推荐的共享闲置设备
	 * @param userCode
	 * @return
	 */
	List<ShareEquip> findUserRecommendEquip(String userCode);
	
	/**
	 * @description 根据用户近期行为查询共享闲置设备
	 * @param userNearBehaviorList
	 * @return
	 */
	List<ShareEquip> findRecommendEquipByUserbehavior(List<UserBehavior> userNearBehaviorList);
	
	/**
	 * @description 查询共享闲置设备详情
	 * @param equipCode
	 * @return
	 */
	ShareEquip findShareEquipDetail(String equipCode);
	
	/**
	 * @description 查询共享闲置设备缩略图
	 * @param equipCode
	 * @return
	 */
	ShareEquip findShareEquipThumb(String equipCode);
	
	/**
	 * @description 查询当前登录人本单位共享设备
	 * @param userCode
	 * @return
	 */
	List<ShareEquip> findMyOrgShareEquipList(String userCode);
	
	/**
	 * @description 查询当前登录人本单位共享设备（分页）
	 * @param param
	 * @param userCode
	 * @return
	 */
	Page<ShareEquip> findMyOrgShareEquipPage(ShareEquipParam param,String userCode);
	
}
